package test;

import common.Utils;
import org.junit.jupiter.api.Assertions;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

/**
 * 登录页面
 */
public class LoginPage extends Utils {

    private static String url = "http://8.137.19.140:9090/blog_login.html";

    public LoginPage() {
        super(url);
    }

    /**
     * 检查页面是否可以正常打开
     */
    public void checkPageRight(){
        // 检查菜单是否加载成功
        // 主页
        driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)"));
        // 写博客
        driver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)"));

        // 检查登录框是否加载成功
        // 用户名
        driver.findElement(By.cssSelector("#username"));
        // 密码
        driver.findElement(By.cssSelector("#password"));
        // 提交按钮
        driver.findElement(By.cssSelector("#submit"));
    }

    /**
     * 异常登录
     * ---用户名和密码都为空
     * ---用户名为空，密码不为空
     * ---用户名不为空，密码为空
     * ---输入正确的账号，错误的密码
     * ---输入错误的账号，错误的密码
     * ---输入错误的账号，正确的密码
     * ---输入框：输入多长、过短、特殊字符……
     */

    // 输入正确的账号，错误的密码
    public void LoginFail(){
        driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");
        driver.findElement(By.cssSelector("#password")).sendKeys("123");
        driver.findElement(By.cssSelector("#submit")).click();

        // 处理弹窗
//        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(2));
        wait.until(ExpectedConditions.alertIsPresent());

        Alert alert = driver.switchTo().alert();
        // 校验弹窗文本
        String actualMsg = alert.getText();
        String expectMsg = "密码错误";
        alert.dismiss();

        // 断言
        Assertions.assertEquals(expectMsg, actualMsg);
    }

    // 登录成功
    public void LoginSuc(){
        // 先清空
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();

        driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456");
        driver.findElement(By.cssSelector("#submit")).click();

        // 登录成功会进入列表页面--注销菜单
        driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)"));
    }
}
